package controllers;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import views.*;
import models.*;
public class AdminController extends AbstractController {
private AdminView adminView;
public AdminController(AdminView adminView, boolean hasBackButton) {
super(adminView, hasBackButton);
this.adminView = adminView;
adminView.setAddButtonActionListener(new AddButtonActionListener());
refresh();
}
public void refresh() {
for (AdminItem ai : adminView.getItems()) {
ai.setDownButtonActionListener(new DownButtonActionListener(ai));
ai.setUpButtonActionListener(new UpButtonActionListener(ai));
ai.setDeleteButtonActionListener(new DeleteButtonActionListener(ai));
}
}
private class DownButtonActionListener implements ActionListener {
private AdminItem ai;
public DownButtonActionListener(AdminItem ai) {
this.ai = ai;
}
public void actionPerformed(ActionEvent e) {
if (ai.getProductStock().getStock() - 1 >= 0) {
Warehouse.getInstance().increaseDecreaseStock(
new ProductStock(ai.getProductStock().getProduct(), ai.getProductStock().getStock() - 1));
}
adminView.refresh();
refresh();
}
}
private class UpButtonActionListener implements ActionListener {
private AdminItem ai;
public UpButtonActionListener(AdminItem ai) {
this.ai = ai;
}
public void actionPerformed(ActionEvent e) {
Warehouse.getInstance().increaseDecreaseStock(
new ProductStock(ai.getProductStock().getProduct(), ai.getProductStock().getStock() + 1));
adminView.refresh();
refresh();
}
}
private class DeleteButtonActionListener implements ActionListener {
private AdminItem ai;
public DeleteButtonActionListener(AdminItem ai) {
this.ai = ai;
}
public void actionPerformed(ActionEvent e) {
Warehouse.getInstance().deleteProduct(ai.getProductStock());
adminView.refresh();
refresh();
}
}
private class AddButtonActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
Warehouse.getInstance().addProduct(new ProductStock(
new Product(adminView.get_Name().getText(), Double.parseDouble(adminView.getPrice().getText())),
Integer.parseInt(adminView.getStock().getText())));
adminView.refresh();
refresh();
}
}
}